Sistema y Archivos
Python proporciona varios módulos estándar para interactuar con el sistema operativo y manipular archivos o directorios. Estos módulos permiten automatizar tareas como crear carpetas, copiar o mover archivos, obtener información del entorno o recorrer estructuras de directorios.
Los tres más utilizados en este ámbito son:
os: para interactuar directamente con el sistema operativo.pathlib: para trabajar con rutas de archivos de manera moderna y orientada a objetos.shutil: para operaciones de alto nivel con archivos (copiar, mover, eliminar, comprimir, etc.).
Su dominio permite desarrollar programas que gestionen archivos y directorios de forma segura y multiplataforma.
1️⃣ Módulo os
El módulo
osofrece una interfaz para acceder a funcionalidades del sistema operativo desde Python. Permite crear, eliminar o renombrar archivos y directorios, obtener información del entorno, ejecutar comandos del sistema y manipular rutas de manera básica.Es un módulo multiplataforma, por lo que las funciones funcionan tanto en Windows, como en macOS o Linux (aunque algunas pueden variar ligeramente según el sistema).
Antes de usarlo, debe importarse con:
import os
🟩 Funciones principales
| Función | Descripción | Ejemplo |
|---|---|---|
os.name | Devuelve el nombre del sistema operativo actual. | 'posix', 'nt', etc. |
os.getcwd() | Devuelve el directorio de trabajo actual. | os.getcwd() |
os.chdir(ruta) | Cambia el directorio de trabajo. | os.chdir("Documentos") |
os.listdir(ruta) | Devuelve una lista con los nombres de los archivos del directorio. | os.listdir(".") |
os.mkdir(nombre) | Crea un nuevo directorio. | os.mkdir("nueva_carpeta") |
os.remove(archivo) | Elimina un archivo. | os.remove("datos.txt") |
os.rmdir(carpeta) | Elimina un directorio vacío. | os.rmdir("vacio") |
os.environ | Devuelve un diccionario con las variables de entorno del sistema. | os.environ["PATH"] |
🟦 Ejemplo práctico
import os
print("Directorio actual:", os.getcwd())
os.mkdir("pruebas")
os.chdir("pruebas")
print("Ahora estamos en:", os.getcwd())
os.chdir("..")
os.rmdir("pruebas")
print("Carpeta eliminada correctamente.")
El programa muestra cómo obtener el directorio actual, crear uno nuevo, cambiar a él y eliminarlo. Estas operaciones son fundamentales para automatizar tareas de organización o mantenimiento de archivos.
🟨 Casos de uso comunes
- Automatización de tareas del sistema (copias, limpieza de archivos, informes).
- Creación y gestión de carpetas en scripts de trabajo.
- Acceso a variables de entorno (rutas, configuraciones, usuario actual).
- Programas que requieran portabilidad entre diferentes sistemas operativos.
2️⃣ Módulo pathlib
El módulo
pathlibfue introducido para modernizar y simplificar el manejo de rutas y archivos, sustituyendo gradualmente al uso tradicional deos.path. Ofrece una interfaz orientada a objetos, lo que permite trabajar con rutas como si fueran objetos, no simples cadenas de texto. Es una alternativa más legible, potente y multiplataforma.
Debe importarse con:
from pathlib import Path
🟩 Funciones principales
| Método / Propiedad | Descripción | Ejemplo |
|---|---|---|
Path(ruta) | Crea un objeto ruta. | Path("Documentos/archivo.txt") |
.exists() | Comprueba si la ruta existe. | p.exists() |
.is_file() / .is_dir() | Indica si es un archivo o un directorio. | p.is_file() |
.iterdir() | Itera sobre los elementos del directorio. | for f in p.iterdir(): ... |
.name, .stem, .suffix | Devuelven el nombre, nombre sin extensión y extensión. | p.suffix → .txt |
.read_text() / .write_text() | Lee o escribe texto directamente. | p.write_text("Hola") |
.unlink() | Elimina un archivo. | p.unlink() |
🟦 Ejemplo práctico
from pathlib import Path
ruta = Path(".") # Directorio actual
for archivo in ruta.iterdir():
if archivo.is_file():
print("Archivo encontrado:", archivo.name)
Path(".")representa el directorio actual.- El método
iterdir()recorre los elementos de la ruta y permite filtrar los archivos con.is_file(). - El código es más limpio y legible que su equivalente con
os.listdir().
🟨 Diferencias con os.path
| Aspecto | os.path | pathlib |
|---|---|---|
| Enfoque | Basado en funciones | Orientado a objetos |
| Legibilidad | Menor | Mayor |
| Portabilidad | Buena | Excelente |
| Lectura/escritura directa | No | Sí (read_text(), write_text()) |
pathlib es hoy la forma recomendada y moderna de trabajar con archivos y rutas en Python.
🟥 Casos de uso comunes
- Recorrido y análisis de carpetas.
- Creación o lectura de archivos con sintaxis clara.
- Filtrado de archivos por extensión o nombre.
- Scripts de organización de documentos o imágenes.
3️⃣ Módulo shutil
El módulo
shutil(abreviatura de shell utilities) permite realizar operaciones avanzadas con archivos y directorios, como copiar, mover, eliminar o comprimir. Se utiliza habitualmente para automatizar tareas de mantenimiento, instalación, respaldo de datos o despliegue de proyectos.
Debe importarse con:
import shutil
🟩 Funciones principales
| Función | Descripción | Ejemplo |
|---|---|---|
shutil.copy(origen, destino) | Copia un archivo. | shutil.copy("a.txt", "b.txt") |
shutil.move(origen, destino) | Mueve o renombra un archivo o carpeta. | shutil.move("datos.txt", "backup/") |
shutil.rmtree(carpeta) | Elimina recursivamente una carpeta y su contenido. | shutil.rmtree("temporal") |
shutil.make_archive(nombre, formato, carpeta) | Crea un archivo comprimido. | shutil.make_archive("respaldo", "zip", "backup") |
shutil.disk_usage(ruta) | Devuelve información sobre el espacio en disco. | shutil.disk_usage("/") |
Las funciones como rmtree() eliminan archivos de forma permanente (no pasan por la papelera).
Por tanto, deben utilizarse con precaución, especialmente en programas que manipulen rutas dinámicas o recibidas del usuario.
🟦 Ejemplo práctico
import shutil
import os
os.mkdir("backup")
shutil.copy("informe.txt", "backup/informe_copia.txt")
shutil.make_archive("respaldo", "zip", "backup")
print("Copia y compresión realizadas correctamente.")
El código crea una carpeta de respaldo, copia un archivo dentro de ella y genera un archivo comprimido ZIP. Estas tareas son comunes en automatización de copias de seguridad o preparación de entregas.
🟨 Casos de uso comunes
- Copias de seguridad automáticas.
- Limpieza de directorios temporales.
- Preparación de proyectos para distribución (archivos ZIP).
- Gestión masiva de archivos y despliegue de aplicaciones.
📊 Tabla resumen
| Módulo | Propósito principal | Ejemplo representativo |
|---|---|---|
os | Interacción básica con el sistema operativo y archivos. | os.listdir() |
pathlib | Manipulación moderna de rutas de archivos. | Path("docs").iterdir() |
shutil | Copiar, mover, eliminar y comprimir archivos. | shutil.make_archive() |
El conocimiento de estos tres módulos permite automatizar tareas de sistema, mantener estructuras de archivos ordenadas y desarrollar aplicaciones multiplataforma, seguras y organizadas.